package com.ruoyi.businessOrder.mapper;

import org.apache.ibatis.annotations.Mapper;
import com.ruoyi.businessOrder.domain.BusinessOrder;
import java.util.List;

/**
 * 交易订单信息 数据层
 * 
 * @author ruoyi
 * @date 2025-06-11
 */
@Mapper
public interface BusinessOrderMapper 
{
    /**
     * 根据订单ID查询交易订单信息
     *
     * @param orderId 交易订单信息主键
     * @return 交易订单信息
     */
    BusinessOrder selectBusinessOrderByOrderId(Long orderId);

    /**
     * 根据订单号查询交易订单信息
     *
     * @param orderCode 订单号
     * @return 交易订单信息
     */
    BusinessOrder selectBusinessOrderByOrderCode(String orderCode);

    /**
     * 查询交易订单信息列表
     * 
     * @param businessOrder 交易订单信息
     * @return 交易订单信息集合
     */
    public List<BusinessOrder> selectBusinessOrderList(BusinessOrder businessOrder);

    /**
     * 新增交易订单信息
     * 
     * @param businessOrder 交易订单信息
     * @return 结果
     */
    public int insertBusinessOrder(BusinessOrder businessOrder);

    /**
     * 修改交易订单信息
     * 
     * @param businessOrder 交易订单信息
     * @return 结果
     */
    public int updateBusinessOrder(BusinessOrder businessOrder);

    /**
     * 删除交易订单信息
     * 
     * @param orderId 交易订单信息主键
     * @return 结果
     */
    public int deleteBusinessOrderByOrderId(Long orderId);

    /**
     * 批量删除交易订单信息
     * 
     * @param orderIds 需要删除的数据主键集合
     * @return 结果
     */
    public int deleteBusinessOrderByOrderIds(Long[] orderIds);

    /**
     * 检查订单是否已支付
     * 
     * @param orderSn 订单编号
     * @return 如果已支付返回 true，否则返回 false
     */
    public boolean isPaid(String orderSn);

    /**
     * 根据订单号查询订单
     * @param orderCode 订单号
     * @return 订单信息
     */
    BusinessOrder getByOrderCode(String orderCode);

    /**
     * 根据员工id获取交易订单列表
     */
    List<BusinessOrder> selectBusinessOrderByEmployeeId(Long employeeId);

    /**
     * 根据员工id和支付状态获取交易订单列表
     */
    List<BusinessOrder> selectBusinessOrderByEmployeeIdAndPayStatus(BusinessOrder orderQuery);

    /**
     * 根据员工id和订单状态获取交易订单列表
     */
    List<BusinessOrder> selectBusinessOrderByEmployeeIdAndOrderStatus(BusinessOrder orderQuery);

    /**
     * 根据skuId获取交易订单
     */
    BusinessOrder selectBusinessOrderBySkuId(Long skuId);

    /**
     * 保存二维码图片地址
     */
    void saveQrCodeUrl(Long orderId, String qrCodeUrl);

    /**
     * 获取业务订单列表时，将订单状态为'3'（退款中）的优先级设为最高，排在最前面
     * 获取交易订单汇总列表
     */
    public List<BusinessOrder> selectBusinessOrderSummaryList(BusinessOrder businessOrder);



}
